%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% vim:enc=utf-8:ts=5:sw=5:et:ff=unix:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\chapter{Verificação Ortográfica}
\label{cha:vero}

\vimhelp{spell}

O Vim possui um recurso nativo de verificação ortográfica ({\em spell}) em
tempo de edição, apontando palavras e expressões desconhecidas---usualmente
erros de grafia---enquanto o usuário as digita. 

Basicamente, para cada palavra digitada o Vim procura por sua grafia em um
dicionário. Não encontrando-a, a palavra é marcada como desconhecida
(sublinhando-a ou alterando sua cor), e fornece ao usuário mecanismos para
{\em corrigi-la} (através de sugestões) ou {\em cadastrá-la} no dicionário
caso esteja de fato grafada corretamente.

\section{Habilitando a verificação ortográfica}
\vimhelp{spell, spelllang}

A verificação ortográfica atua em uma linguagem (dicionário) por vez,
portanto, sua efetiva habilitação depende da especificação desta linguagem.
Por exemplo, para habilitar no arquivo em edição a verificação ortográfica na
língua portuguesa ({\em pt}), assumindo-se a existência do dicionário em
questão:

\begin{verbatim}
     :setlocal spell spelllang=pt
\end{verbatim}

ou de forma abreviada:

\begin{verbatim}
     :setl spell spl=pt
\end{verbatim}


Trocando-se {\tt setlocal} ({\tt setl}) por apenas {\tt set} ({\tt se}) faz
com que o comando tenha efeito global, isto é, todos os arquivos da sessão
corrente do Vim estariam sob efeito da verificação ortográfica e do mesmo
dicionário (no caso o {\tt pt}).

A desabilitação da verificação dá-se digitando:

\begin{verbatim}
     :setlocal nospell
     :set nospell            (efeito global)
\end{verbatim}

Caso queira-se apenas alterar o dicionário de verificação ortográfica, suponha
para a língua inglesa ({\tt en}), basta:

\begin{verbatim}
     :setlocal spelllang=en
     :set spelllang=en       (efeito global)
\end{verbatim}

\subsection{Habilitação automática na inicialização}
\vimhelp{autocmd, Filetype, BufNewFile, BufRead}

Às vezes torna-se cansativo a digitação explícita do comando de habilitação da
verificação ortográfica sempre quando desejada.  Seria conveniente se o Vim
habilitasse automaticamente a verificação para aqueles tipos de arquivos que
comumente fazem uso da verificação ortográfica, como por exemplo arquivos
``texto''. Isto é possível editando-se o arquivo de configuração do Vim {\tt
.vimrc} (veja Cap.~\ref{cha:Como editar preferências no Vim}) e incluindo as
seguintes linhas: 

\begin{verbatim}
     autocmd Filetype text setl spell spl=pt
     autocmd BufNewFile,BufRead *.txt setl spell spl=pt
\end{verbatim}

Assim habilita-se automaticamente a verificação ortográfica usando o
dicionário da língua portuguesa ({\tt pt}) para arquivos do tipo {\tt texto} e
os terminados com a extensão {\tt .txt}. Mais tecnicamente, diz-se ao Vim para
executar o comando \verb|setl spell spl=pt| sempre quando o tipo do arquivo
({\tt Filetype}) for {\tt text} (texto) ou quando um arquivo com extensão {\tt .txt}
for carregado ({\tt BufRead}) ou criado ({\tt BufNewFile}).

\section{O dicionário de termos}

A qualidade da verificação ortográfica do Vim está diretamente ligada à
completude e corretude do dicionário da linguagem em questão. Dicionários
pouco completos são inconvenientes à medida que acusam falso positivos em
demasia; pior, dicionários contendo palavras grafadas incorretamente, além de
acusarem falso positivos, induzem o usuário ao erro ao sugerirem grafias
erradas.

É razoavelmente comum o Vim já vir instalado com dicionários de relativa
qualidade para algumas linguagens (ao menos inglês, habitualmente).
Entretanto, ainda é raro para a maioria das instalações do Vim trazer por {\em
default} um dicionário realmente completo e atualizado da língua portuguesa. A
próxima seção sintetiza, pois, os passos para a instalação de um excelente---e
disponível livremente---dicionário de palavras para a língua portuguesa.

\subsection{Dicionário português segundo o acordo ortográfico}

A equipe do projeto {\tt BrOffice.org} e seus colaboradores mantêm e
disponibilizam livremente um grandioso dicionário de palavras da língua
portuguesa. Além do expressivo número de termos, o dicionário contempla as
mudanças ortográficas definidas pelo {\em Acordo
Ortográfico}~\cite{wiki:acordo_ortografico} que entraram em vigor no início de
2009.

A instalação envolve três passos, são eles: 
\begin{enumerate}
     \item obtenção do dicionário através do site {\tt BrOffice.org}; 
     \item conversão para o formato interno de dicionário do Vim; e 
     \item instalação dos arquivos resultantes.
\end{enumerate}

\subsubsection{Obtenção do dicionário}
\index{verificaçação ortográfica}

O dicionário pode ser obtido no
\href{http://www.broffice.org/verortografico/baixar}{site do
br.office.org}~\cite{DicionarioBroffice}. O arquivo baixado encontra-se
compactado no formato {\tt Zip}, bastando portanto descompactá-lo com qualquer
utilitário compatível com este formato, por exemplo, o comando {\tt unzip}.

\subsubsection{Conversão do dicionário}
\vimhelp{mkspell}

Após a descompactação, os arquivos \verb|pt_BR.aff| e \verb|pt_BR.dic|,
extraídos no diretório corrente\footnote{Eventualmente, dependendo da versão
do pacote de correção ortográfica, os arquivos de dicionário podem ser
extraídos no subdiretório {\tt dictionaries} ou outro qualquer.}, serão usados
para a criação dos dicionários no formato interno do Vim\footnote{O formato
interno de dicionário do Vim assegura melhor desempenho, em termos de
agilidade e consumo de memória, quando a verificação ortográfica do editor
encontra-se em operação.}.  A conversão propriamente dita é feita pelo próprio
Vim através do comando {\tt mkspell}:

\begin{enumerate}
\item Carrega-se o Vim a partir do diretório onde foram extraídos
\verb|pt_BR.aff| e \verb|pt_BR.dic|
\item O comando {\tt mkspell} é então executado como:
\begin{verbatim}
     :mkspell pt pt_BR
\end{verbatim}
\end{enumerate}

O Vim então gera um arquivo de dicionário da forma
\verb|pt.<codificação>.spl|, onde \verb|<codificação>| é a codificação de
caracteres do sistema, normalmente \verb|utf-8| ou \verb|latin1|; caso
queira-se um dicionário em uma codificação diferente da padrão será preciso
ajustar a variável {\tt encoding} antes da invocação do comando {\tt mkspell}:

\begin{verbatim}
     :set encoding=<codificação>
     :mkspell pt pt_BR
\end{verbatim}

\subsubsection{Instalação do(s) dicionário(s) gerado(s)}
\vimhelp{runtimepath}

Finalmente, o dicionário gerado---ou os dicionários, dependendo do uso ou não
de codificações diferentes---deve ser copiado para o subdiretório {\tt spell/}
dentro de qualquer caminho (diretório) que o Vim ``enxergue''. A lista de
caminhos lidos pelo Vim encontra-se na variável {\tt runtimepath}, que pode
ser inspecionada através de:

\begin{verbatim}
     :set runtimepath
\end{verbatim}

É suficiente então copiar o dicionário \verb|pt.<codificação>.spl| para o
subdiretório {\tt spell/} em qualquer um dos caminhos listados através do
comando mostrado. 

\section{Comandos relativos à verificação ortográfica}

\subsection{Encontrando palavras desconhecidas}

Muito embora o verificador ortográfico cheque imediatamente cada palavra
digitada, sinalizando-a ao usuário caso não a reconheça, às vezes é mais
apropriado realizar a verificação ortográfica do documento por inteiro.
O Vim dispõe de comandos específicos para busca e movimentação em palavras
grafadas incorretamente (desconhecidas) no escopo do documento, dentre eles:

\begin{verbatim}
     ]s ..... vai para a próxima palavra desconhecida
     [s ..... como o ]s, mas procura no sentido oposto
\end{verbatim}

Ambos os comandos aceitam um prefixo numérico, que indica a quantidade de
movimentações (buscas). Por exemplo, o comando {\tt 3]s} vai para a {\em
terceira} palavra desconhecida a partir da posição atual.

\subsection{Tratamento de palavras desconhecidas}

Há basicamente duas operações possíveis no tratamento de uma palavra apontada
pelo verificador ortográfico do Vim como desconhecida: 

\begin{enumerate}
\item {\bf corrigi-la} -- identificando o erro com ou sem o auxílio das
sugestões do Vim.
\item {\bf cadastrá-la no dicionário} -- ensinando o Vim a reconhecer sua
grafia.
\end{enumerate}

Assume-se nos comandos descritos nas seções a seguir que o cursor do editor
encontra-se sobre a palavra marcada como desconhecida.

\subsubsection{Correção de palavras grafadas incorretamente}

É possível que na maioria das vezes o usuário perceba qual foi o erro cometido
na grafia, de forma que o próprio possa corrigi-la sem auxílio externo. No
entanto, algumas vezes o erro não é evidente, e sugestões fornecidas pelo Vim
podem ser bastante convenientes. Para listar as sugestões para a palavra
em questão executa-se:

\begin{verbatim}
     z= ..... solicita sugestões ao verificador ortográfico
\end{verbatim}

Se alguma das sugestões é válida -- as mais prováveis estão nas primeiras
posições -- então basta digitar seu prefixo numérico e pressionar 
\texttt{<Enter>}. Se nenhuma sugestão for adequada, basta simplesmente
pressionar \texttt{<Enter>} e ignorar a correção.

\subsubsection{Cadastramento de novas palavras no dicionário}

Por mais completo que um dicionário seja, eventualmente palavras,
especialmente as de menor abrangência, terão que ser cadastradas a fim de
aprimorar a exatidão da verificação ortográfica. A manutenção do dicionário 
dá-se pelo cadastramento e retirada de palavras:

\begin{verbatim}
     zg ..... adiciona a palavra no dicionário
     zw ..... retira a palavra no dicionário, marcando-a como 
              `desconhecida'
\end{verbatim}
